//
//  SinaBaseController.swift
//  Sina
//
//  Created by 星仔 on 2017/2/23.
//  Copyright © 2017年 xingZai. All rights reserved.
//

import UIKit

class SinaBaseController: UIViewController {
    
    var visitDict:[String:String]?
//定义属性
     lazy var navBar:UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 64))
     lazy var navBarItems:UINavigationItem = UINavigationItem()
     var tableView:UITableView?
     var refresh:UIRefreshControl?
    //是否是上拉刷新
    var isPull:Bool = false
    //是否登录
    var isLogin:Bool = true
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
         setupUI()
         setupData()
        
    }
    //FIXME:重写系统属性
    override var title: String?{
        didSet{
           navBarItems.title = title
        }
    }
    //MARK:设置数据
    func setupData(){
        refresh?.endRefreshing()
    }
    
}
//MARK:设置代理和数据源,因为父类不需要具体实现这个方法
extension SinaBaseController:UITableViewDataSource,UITableViewDelegate{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    //cell将要显示时设置
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        
        //首先先取出最后一个section,row
        let section = tableView.numberOfSections-1
        let row = indexPath.row
        if row < 0 || section < 0 {
            return
        }
        //最大section的row
        let count = tableView.numberOfRows(inSection: section)
        if !isPull && (row == count - 1) {
            print("上拉刷新")
           setupData()
           isPull = true
        }
    }
    
}

//MARK:设置UI和数据
extension SinaBaseController{
    
    func setupUI(){
     isLogin ? setupTableView() : setupVisitView()
      setupNav()
    }
    //FIXME:设置访问视图
    private func setupVisitView(){
        
        let visiView = SinaVisitView(frame: view.bounds)
        
        view.insertSubview(visiView, belowSubview: navBar)
        visiView.visitorInfo = visitDict
        
    }
    //FIXME:设置tableView
    private func setupTableView(){
        tableView = UITableView(frame: view.bounds, style: .plain)
        automaticallyAdjustsScrollViewInsets = false
        tableView?.contentInset = UIEdgeInsetsMake(navBar.bounds.height, 0,(tabBarController?.tabBar.bounds.height)!, 0)
        view.insertSubview(tableView!, belowSubview: navBar)
        tableView?.dataSource = self
        tableView?.delegate = self
        //添加刷新
        refresh = UIRefreshControl()
        tableView?.addSubview(refresh!)
        refresh?.addTarget(self, action: #selector(setupData), for: .valueChanged)
        
    }
    //FIXME:设置导航
    private func setupNav(){
        view.addSubview(navBar)
        navBar.items = [navBarItems]
        navBar.barTintColor = UIColor.white
        navBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.orange]
    }
    
}
